package com.skyline.wo.dao;

import java.util.List;

import com.skyline.base.type.Activity;
import com.skyline.wo.model.Category;

/**
 * CategoryDao is the interface of Category DATABASE ACCESS operation
 * 
 * @author Jairus Chan
 * @version 0.1
 * 
 */
public interface CategoryDao {

	/**
	 * 插入日志分类记录
	 * 
	 * @param ownerId
	 *            创建人Id
	 * @param ownerPortrait
	 *            创建人头像
	 * @param ownerNickname
	 *            创建人昵称
	 * @param categoryName
	 *            分类名
	 * @param activity
	 *            状态
	 * @return null
	 */
	public void inseartCategory(Long ownerId, String ownerPortrait, String ownerNickname, String categoryName, Activity activity);

	/**
	 * 修改日志分类记录
	 * 
	 * @param id
	 *            分类id
	 * @param categoryName
	 *            分类名
	 * @param ownerId
	 *            用户名，只用分类主人才可以进行修改
	 * @return null
	 */
	public void updateCategory(Long id, String categoryName, Long ownerId);

	/**
	 * 修改日志分类文章数量
	 * 
	 * @param id
	 *            分类id
	 * @param ownerId
	 *            用户名，只用分类主人才可以进行修改
	 * @param num
	 *            修改多少
	 * @return null
	 */
	public void updateArticleNumAdd(Long id, Long ownerId, Integer num);

	/**
	 * 修改日志分类文章数量
	 * 
	 * @param id
	 *            分类id
	 * @param ownerId
	 *            用户名，只用分类主人才可以进行修改
	 * @param num
	 *            修改多少
	 * @return null
	 */
	public void updateArticleNumMinus(Long id, Long ownerId, Integer num);

	/**
	 * 删除日志分类记录
	 * 
	 * @param id
	 *            分类Id
	 * @return null
	 */
	public void deleteCategory(Long id,Long ownerId);

	/**
	 * 查询日志分类记录
	 * 
	 * @param ownerId
	 *            创建人Id
	 * @return List<Category>
	 */
	public List<Category> queryCategoryByOwnerId(Long ownerId);

	/**
	 * 查询日志分类记录
	 * 
	 * @param ownerId
	 *            创建人Id
	 * @param categoryName
	 *            分类名称
	 * @return Integer
	 */
	public Integer countSameCategory(Long ownerId, String categoryName);

	/**
	 * 查询日志分类记录
	 * 
	 * @param id
	 *            分类Id
	 * @return Article
	 */
	public Category queryCategoryById(Long id);

}
